﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LunarSF.SHomeWorkshop.LunarMarkdownEditor
{

    public class AnchorWrap
    {
        /// <param name="tailPath">指当前文档的完整路径去除头部的工作区目录之后的尾巴。</param>
        public AnchorWrap(string tailPath)
        {
            this.tailPath = tailPath;
        }

        private List<Anchor> anchors = new List<Anchor>();
        /// <summary>
        /// 一个 AnchorWrap 对应一个 Markdown 文件；
        /// 一个 AnchorText 则对应 Markdown 文件中某个具体的“锚”的文本。
        /// </summary>
        public List<Anchor> Anchors { get { return anchors; } }

        /// <summary>
        /// 同一个 Markdown 文件中，同 ID 的新锚会覆盖旧锚。
        /// </summary>
        /// <param name="anchorText"></param>
        public void Add(Anchor anchorText)
        {
            var at = FindAnchor(anchorText.ID);
            if (at != null) anchors.Remove(at);
            anchors.Add(anchorText);
        }

        public bool Exist(string aID)
        {
            foreach (var at in anchors)
            {
                if (at.ID.ToLower() == aID.ToLower()) return true;
            }

            return false;
        }

        public Anchor FindAnchor(string aID)
        {
            foreach (var at in anchors)
            {
                if (at.ID.ToLower() == aID.ToLower()) return at;
            }

            return null;
        }

        private string tailPath = "";
        /// <summary>
        /// 此“锚”文本片段所在的文件相对于工作区目录的路径。
        /// </summary>
        public string TailPath
        {
            get { return tailPath; }
        }

    }

}
